package com.nowcoder.topic.string.middle;

import java.util.Arrays;

/**
 * NC324 下一个更大的数(三)
 * @author d3y1
 */
public class NC324{
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 模拟法: 举例子找规律
     *
     * @param n int整型
     * @return int整型
     */
    public int nextGreaterElement (int n) {
        char[] numArr = String.valueOf(n).toCharArray();
        int len = numArr.length;

        for(int i=len-1; i>=0; i--){
            for(int j=len-1; j>i; j--){
                if(numArr[i] < numArr[j]){
                    swap(numArr, i, j);
                    sort(numArr, i+1, len);
                    return Integer.parseInt(String.valueOf(numArr));
                }
            }
        }

        return -1;
    }

    /**
     * 交换
     * @param numArr
     * @param i
     * @param j
     */
    private void swap(char[] numArr, int i, int j){
        char tmp = numArr[i];
        numArr[i] = numArr[j];
        numArr[j] = tmp;
    }

    /**
     * 排序: 升序
     * @param numArr
     * @param i
     * @param j
     */
    private void sort(char[] numArr, int i, int j){
        // Arrays sub sort => start: i, end: j(不包含j)
        Arrays.sort(numArr, i, j);
    }
}